package part2_q3;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import common.CMultinomial;
import common.CMultinomialProbabiliteAPosteriori;
import common.InterfaceTest;


public class TroisiemeApproche extends InterfaceTest{	
	
	
	
	static String fichierEtiquettesFloues;
	
	

	public static void main(String args[]){
		
		/**
		 *  optimal Multinomial : (false,0.1,25)
		 */
		supprimerMotsOutils = false;
		seuil = 0.1;
		epsilon = 25;
		
		listeFichiersApprentissage.add(new File ("kitchen/training.txt") );
		fichierEtiquettesFloues = "kitchen/justlab_part2_3.txt";

			long start = System.currentTimeMillis(); 

			// 1ère étape : utiliser le fichier d'apprentissage "training.txt" et
			// le fichier de test "unlab.txt", pour déterminer une probabilité
			// a posteriori d'être positive (ou négative) selon la valeur de log
			// vraisemblance la plus grande, pour chaque critique du fichier de test.
			// Le résultat, comprenant pour chaque critique du fichier de test la 
			// probabilité a posteriori d'être positive, sera mis dans le fichier 
			// de sortie "justlab_part2_3.txt".
			

			CMultinomialProbabiliteAPosteriori mpap = new CMultinomialProbabiliteAPosteriori
			(listeFichiersApprentissage, new File("kitchen/unlab.txt"), fichierEtiquettesFloues, supprimerMotsOutils,seuil,epsilon, true);
			//mpap.executerCreationClasseur();
			
			// 2ème étape : Utiliser comme jeux d'apprentissage "training.txt" ET
			// le fichier "justlab_part2_3.txt", qui vient fraichement de contenir la probabilité
			// a posteriori de chaque critique. 
			// Ainsi, on aura 2 fichiers d'apprentissage au lieu d'un :
			// - le fichier "training.txt", dans lequel chaque critique a comme probabilité
			// à posteriori de 1
			// - le fichier "justlab_part2_3.txt", dans lequel chaque critique a comme probabilité
			// à posteriori comprise entre 0.5 et 1.

			listeFichiersApprentissage.add(new File(fichierEtiquettesFloues));

			CMultinomial mm = new CMultinomial
			(listeFichiersApprentissage,new File("kitchen/test.txt"),supprimerMotsOutils,seuil,epsilon, false);
			
			mm.executerCreationClasseur();
			PrintWriter ecrivain = null;
			
			try {
				ecrivain =  new PrintWriter(new BufferedWriter(new FileWriter("TroisiemeApprocheTauxDeReussite.csv")));
			} catch (IOException e) {
				e.printStackTrace();
			}

			ecrivain.println("TauxReussite");

			ecrivain.println("Taux de réussite sur jeu de test : " + mm.getTauxReussite());
			
			ecrivain.close();
			
			long time= System.currentTimeMillis(); 
			System.out.println("Programme : " + (((time - start)/1000)) + "secondes");

	}
}
